perm filename EVENTS.LIS[BMP,SYS] blob
sn#737802 filedate 1984-01-14 generic text, type T, neo UTF8
;;; -*- Mode: LISP; Package: USER; Base: 10 -*-
(HERALD EVENTS)
(DEFEVENT ADD-AXIOM (NAME TYPES TERM)
(LET ((IN-ADD-AXIOM-FLG T))
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE ADD-AXIOM)
NAME TYPES TERM))
T
(QUOTE C)
NIL T T)))
(T (LET (MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-LEMMA NAME TYPES TERM)
(MAKE-EVENT NAME (LIST (QUOTE ADD-AXIOM) NAME TYPES TERM))
(ADD-FACT NIL (QUOTE NONCONSTRUCTIVE-AXIOM-NAMES)
NAME)
(ADD-LEMMA0 NAME TYPES TERM)
(DEPEND NAME (ALL-FNNAMES (TRANSLATE TERM)))
NAME)))))
(DEFEVENT ADD-SHELL
(SHELL-NAME BTM-FN-SYMB RECOGNIZER DESTRUCTOR-TUPLES)
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE ADD-SHELL)
SHELL-NAME BTM-FN-SYMB
RECOGNIZER
DESTRUCTOR-TUPLES))
T (QUOTE C) NIL T T)))
(T (LET (MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-SHELL SHELL-NAME BTM-FN-SYMB RECOGNIZER
DESTRUCTOR-TUPLES)
(MAKE-EVENT SHELL-NAME
(LIST (QUOTE ADD-SHELL)
SHELL-NAME BTM-FN-SYMB RECOGNIZER
DESTRUCTOR-TUPLES))
(ADD-SHELL0 SHELL-NAME BTM-FN-SYMB RECOGNIZER
DESTRUCTOR-TUPLES)
(DEPEND SHELL-NAME
(SET-DIFF (UNION (LOOP FOR X IN DESTRUCTOR-TUPLES
WITH LOOP-ANS
DO (SETQ LOOP-ANS
(UNION (CDR (CADR X))
LOOP-ANS))
FINALLY (RETURN LOOP-ANS))
(LOOP FOR X IN DESTRUCTOR-TUPLES
WITH LOOP-ANS
DO
(SETQ LOOP-ANS
(ADD-TO-SET (CADDR X)
LOOP-ANS))
FINALLY (RETURN LOOP-ANS)))
(COND (BTM-FN-SYMB (LIST BTM-FN-SYMB
RECOGNIZER))
(T (LIST RECOGNIZER)))))
; Make the shell depend on every fn used in the type restrictions and
; defaults except the BTM-FN-SYMB and RECOGNIZER of this type.
SHELL-NAME))))
(DEFUN BOOT-STRAP ()
(LET ((IN-BOOT-STRAP-FLG T))
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS
(LIST (LIST (QUOTE BOOT-STRAP)))
T
(QUOTE C)
NIL
T
T)))
(T (LET (MAIN-EVENT-NAME
(ARITY-ALIST
(QUOTE ((NOT . 1) (AND . 2) (OR . 2) (IMPLIES . 2)
(LESSP . 2) (PLUS . 2)))))
(BOOT-STRAP0)
(MAKE-EVENT (QUOTE GROUND-ZERO) (LIST (QUOTE BOOT-STRAP)))
(ADD-FACT (QUOTE IF) (QUOTE LISP-CODE) (QUOTE 1IF))
(ADD-FACT (QUOTE EQUAL) (QUOTE LISP-CODE) (QUOTE 1EQUAL))
(ADD-FACT (QUOTE IF)
(QUOTE TYPE-PRESCRIPTION-LST)
(CONS (QUOTE GROUND-ZERO)
(QUOTE (0 NIL T T))))
(ADD-FACT (QUOTE EQUAL)
(QUOTE TYPE-PRESCRIPTION-LST)
(CONS (QUOTE GROUND-ZERO)
(CONS TYPE-SET-BOOLEAN (QUOTE (NIL NIL)))))
(ADD-FACT (QUOTE COUNT) (QUOTE LISP-CODE) (QUOTE 1COUNT))
(ADD-FACT (QUOTE COUNT)
(QUOTE TYPE-PRESCRIPTION-LST)
(CONS (QUOTE GROUND-ZERO)
(CONS TYPE-SET-NUMBERS (QUOTE (NIL)))))
(LOOP FOR INSTR IN BOOT-STRAP-INSTRS DO (APPLY (CAR INSTR)
(CDR INSTR)))
(SETQ FAILED-THMS NIL)
(QUOTE GROUND-ZERO))))))
(DEFEVENT DCL (NAME ARGS)
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE DCL)
NAME ARGS))
T
(QUOTE C)
NIL T T)))
(T (LET (MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-DCL NAME ARGS)
(MAKE-EVENT NAME (LIST (QUOTE DCL) NAME ARGS))
(DCL0 NAME ARGS)
NAME))))
(DEFEVENT DEFN (NAME ARGS BODY RELATION-MEASURE-LST)
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE DEFN)
NAME ARGS BODY
RELATION-MEASURE-LST))
T
(QUOTE C)
NIL T T)))
(T
(LET (MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-DEFN NAME ARGS BODY RELATION-MEASURE-LST)
(MAKE-EVENT NAME (COND (RELATION-MEASURE-LST
(LIST (QUOTE DEFN) NAME ARGS BODY
RELATION-MEASURE-LST))
(T (LIST (QUOTE DEFN) NAME ARGS BODY))))
(DEFN0 NAME ARGS BODY RELATION-MEASURE-LST NIL)
(DEPEND
NAME
(REMOVE
NAME
(UNION
(ALL-FNNAMES (TRANSLATE BODY))
(UNION
ALL-LEMMAS-USED
(LOOP FOR TEMP IN (GET1 NAME (QUOTE JUSTIFICATIONS))
WITH LOOP-ANS
DO (SETQ
LOOP-ANS
(UNION (COND
((NULL (ACCESS JUSTIFICATION RELATION TEMP))
NIL)
(T (UNION (ALL-FNNAMES (ACCESS
JUSTIFICATION
MEASURE-TERM
TEMP))
(ADD-TO-SET (ACCESS JUSTIFICATION
RELATION TEMP)
(ACCESS JUSTIFICATION
LEMMAS TEMP)))))
LOOP-ANS))
FINALLY (RETURN LOOP-ANS))))))
(PRINT-DEFN-MSG NAME ARGS)
(DEFN-WRAPUP (TOTAL-FUNCTIONP NAME))
(COND ((TOTAL-FUNCTIONP NAME)
NAME)
(T NIL))))))
(DEFEVENT DISABLE (OLDNAME)
(APPLY (FUNCTION TOGGLE) (LIST (MAKE-NEW-NAME) OLDNAME T)))
(DEFEVENT ENABLE (OLDNAME)
(APPLY (FUNCTION TOGGLE) (LIST (MAKE-NEW-NAME) OLDNAME NIL)))
(DEFEVENT PROVE-LEMMA (NAME TYPES TERM HINTS)
(LET ((IN-PROVE-LEMMA-FLG T))
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE PROVE-LEMMA)
NAME TYPES TERM HINTS))
T
(QUOTE C)
NIL T T)))
(T
(LET (PROVE-ANS MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-LEMMA NAME TYPES TERM)
(CHK-ACCEPTABLE-HINTS HINTS)
(UNWIND-PROTECT
(PROGN
; Before calling PROVE we call APPLY-HINTS. APPLY-HINTS sets some global
; variables that affect the theorem-prover. We enter an UNWIND-PROTECT here
; so that we can set those variables to their standard default values no
; matter how we exit PROVE.
(SETQ PROVE-ANS
(PROVE (APPLY-HINTS HINTS TERM)))
(COND (PROVE-ANS
(MAKE-EVENT NAME (COND (HINTS
(LIST (QUOTE PROVE-LEMMA)
NAME TYPES TERM HINTS))
(T (LIST (QUOTE PROVE-LEMMA)
NAME TYPES TERM))))
(ADD-LEMMA0 NAME TYPES TERM)
(DEPEND NAME
(UNION ALL-LEMMAS-USED
(UNION (EXTRACT-DEPENDENCIES-FROM-HINTS
HINTS)
(ALL-FNNAMES
(TRANSLATE TERM)))))))
(COND (PROVE-ANS NAME)
(T NIL)))
(LOOP FOR X IN HINT-VARIABLE-ALIST
DO (SET (CADR X) (CADDDR X)))))))))
(DEFEVENT REFLECT (NAME SATISFACTION-LEMMA-NAME RELATION-MEASURE-LST)
(COND
((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE REFLECT)
NAME
SATISFACTION-LEMMA-NAME
RELATION-MEASURE-LST))
T
(QUOTE C)
NIL T T)))
(T
(LET (MAIN-EVENT-NAME)
(DEFN-SETUP (LIST (QUOTE REFLECT)
NAME SATISFACTION-LEMMA-NAME
RELATION-MEASURE-LST))
(CHK-ACCEPTABLE-REFLECT NAME SATISFACTION-LEMMA-NAME
RELATION-MEASURE-LST)
(MAKE-EVENT NAME
(COND (RELATION-MEASURE-LST
(LIST (QUOTE REFLECT) NAME SATISFACTION-LEMMA-NAME
RELATION-MEASURE-LST))
(T (LIST (QUOTE REFLECT) NAME
SATISFACTION-LEMMA-NAME))))
(REFLECT0 NAME SATISFACTION-LEMMA-NAME
RELATION-MEASURE-LST NIL)
(DEPEND
NAME
(REMOVE
NAME
(ADD-TO-SET
SATISFACTION-LEMMA-NAME
(UNION-EQUAL
ALL-LEMMAS-USED
(LOOP FOR TEMP IN (GET1 NAME (QUOTE JUSTIFICATIONS))
WITH LOOP-ANS
DO (SETQ LOOP-ANS
(UNION
(COND
((NULL (ACCESS JUSTIFICATION RELATION TEMP))
NIL)
(T (UNION (ALL-FNNAMES (ACCESS
JUSTIFICATION
MEASURE-TERM
TEMP))
(ADD-TO-SET (ACCESS JUSTIFICATION
RELATION TEMP)
(ACCESS
JUSTIFICATION
LEMMAS TEMP)))))
LOOP-ANS))
FINALLY (RETURN LOOP-ANS))))))
(PRINT-DEFN-MSG NAME (CADR (GET1 NAME (QUOTE SDEFN))))
(DEFN-WRAPUP (TOTAL-FUNCTIONP NAME))
(COND ((TOTAL-FUNCTIONP NAME)
NAME)
(T NIL))))))
(DEFEVENT TOGGLE (NAME OLDNAME FLG)
(COND ((NOT IN-REDO-UNDONE-EVENTS-FLG)
(CAR (REDO-UNDONE-EVENTS (LIST (LIST (QUOTE TOGGLE)
NAME OLDNAME FLG))
T
(QUOTE C)
NIL T T)))
(T (LET (MAIN-EVENT-NAME)
(CHK-ACCEPTABLE-TOGGLE NAME OLDNAME FLG)
(MAKE-EVENT NAME (LIST (QUOTE TOGGLE) NAME OLDNAME FLG))
(ADD-FACT NIL (QUOTE DISABLED-LEMMAS)
(CONS OLDNAME (CONS NAME FLG)))
(DEPEND NAME (LIST (MAIN-EVENT-OF OLDNAME)))
NAME))))